<?php
/**
 * View_Article
 *
 * Класс View_Article отвечает за вывод информации, связанной со статьями
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_Article extends View_Base {

	/**
	 * Выводит форму добавления/редактирвоания статьи
	 * 
	 * @param Article $objArticle
	 */
	public function showEditForm(Article $objArticle) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'leftWidth' => 200
		), $objArticle);
		$objForm->show();
		
		$objForm->textField(array('maxlength' => 128, 'text' => 'Название статьи', 'required' => 1), 'article_name');
		//$objForm->textField(array('maxlength' => 128, 'text' => 'Название статьи (en)', 'required' => 1), 'article_name_en');
		
		$objForm->textField(array('maxlength' => 128, 'text' => 'URL', 'required' => 1), 'url');
		//$objForm->checkbox(array('text' => 'Для админки отелей'), 'is_hms');
		
		$objForm->textField(array('maxlength' => 128, 'text' => 'Meta-Title', 'required' => 1), 'title');
		//$objForm->textField(array('maxlength' => 128, 'text' => 'Meta-Title (en)', 'required' => 1), 'title_en');
				
		$objForm->textField(array('maxlength' => 256, 'text' => 'Meta-description'), 'description');
		//$objForm->textField(array('maxlength' => 128, 'text' => 'Meta-description (en)'), 'description_en');

		$objForm->textField(array('maxlength' => 256, 'text' => 'Meta-keywords'), 'keywords');
		//$objForm->textField(array('maxlength' => 128, 'text' => 'Meta-keywords (en)'), 'keywords_en');
		
		//Вывод WYSIWYG-поля
		$arrWysiwygSettings = array(
		  'rows' => 15, 
		  'cols' => 120, 
		  'text' => 'Текст', 
		  'class' => 'wysiwygAdmin',
		  'wideTextarea' => true 
		);
		$arrWysiwygSettings['text'] = 'Текст';
		$objForm->textareaField($arrWysiwygSettings, 'text');
		//$arrWysiwygSettings['text'] = 'Текст (en)';
		//$objForm->textareaField($arrWysiwygSettings, 'text_en');
		$objForm->submitButton(array(), 'save');
		$objForm->close();
	}
	
	
	/**
	 * (non-PHPdoc)
	 * @see View_Base::showOneInList()
	 */
	public function showOneInAdminList($arrArticles) {
		Service_Debug::setDebug();
		echo '<div>';
		  echo '<a href="' . W_ADMIN . 'articles/edit/' . $arrArticles['ID_article'] . '">';
		    echo $arrArticles['article_name'];
		  echo '</a>';
		  echo ' (/' . $arrArticles['url'] . ')';
		 // echo ' <span class="autoDelete ajax red" essencetype="article" essenceid="' . $arrArticles['ID_article'] . '">Удалить</span>';
		echo '</div>';
	}
	
	/**
	 * Метод отображает список элементов переданного массива
	 *
	 * @param array $arrList - массив элементов для отображения в списке
	 * @param string $divId - идентификатор блока, обрамляющего список. Если === null, то обрамляющего дива вообще не будет
	 * @param bool $isTable - флаг, выводить ли таблицей 
	 */
	public function showAdminList(array $arrArticles) {
		Service_Debug::setDebug();
    echo '<div>';
      if (!$arrArticles) $this->showEmptyListMessage();
  	  else {
	      foreach ($arrArticles as $arrArticle) {
	      	$this->showOneInAdminList($arrArticle);
	      }
	    }
		echo '</div>'; 
	}
	
	/**
	 * Выводим формы для конкретных статей 
	 * 
	 * @param string $url - URL статьи
	 * @param Data $objData - Данные для формы
	 */
	public function showArticleForms($url, Data $objData) {
		Service_Debug::setDebug();
		switch ($url) {
			case 'group_form.htm': $this->showGroupForm($objData); break;
			case 'cancellation.htm': $this->showCancellationForm($objData); break;
			case 'contacts.htm': $this->showFeedbackForm($objData); break;			
			case 'offertohotels_form.htm': $this->showOffertHotelForm($objData); break;			
			case 'offertohotels.htm': $this->showOfferButton(); break;			
			case 'wm_request.htm': $this->showWMRequestForm($objData); break;			
			case 'wm_pay.htm': $this->showWMPayForm($objData); break;			
			case 'careers.htm': $this->showCareersForm($objData); break;			
		}
	}
	
	/**
	 * Вводим форму группового бронирования
	 * 
	 * @param Data $objData - Данные для формы
	 */
	public function showGroupForm(Data $objData) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'leftWidth' => 300,
			'successMessage' => Service_Translate::getText('Успешно отправлено'),
		  'id' => 'groupBookingForm'
		), $objData);
		$objForm->show();
		
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Имя'), 'required' => 1), 'first_name');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Фамилия'), 'required' => 1), 'last_name');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Отчество')), 'middle_name');
		$objForm->showSeparator();
		
		$objForm->textField(array('maxlength' => 128, 'text' => 'E-Mail'), 'e_mail');
		$objForm->textField(array('maxlength' => 24, 'text' => Service_Translate::getText('Телефон')), 'phone');				
		$objForm->textField(array('maxlength' => 24, 'text' => Service_Translate::getText('Факс')), 'fax');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Название компании (для организаций)')), 'company_name');
		$objForm->showSeparator();

		$objForm->textField(array('maxlength' => 24, 'text' => Service_Translate::getText('Дата заезда'), 'class' => 'date_arr standardText', 'required' => 1), 'date_arr');
		$objForm->textField(array('maxlength' => 24, 'text' => Service_Translate::getText('Дата выезда'), 'class' => 'date_dep standardText', 'required' => 1), 'date_dep');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Страна (место поездки)'), 'required' => 1), 'country');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Город (место поездки)'), 'required' => 1), 'city');
		$objForm->showSeparator();
		
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Гостиница (если точно знаете, где остановитесь)')), 'hotel');
		$objForm->showBeforeField(array('text' => Service_Translate::getText('Предлагать альтернативные варианты')), 'other_hotel');
			echo '<input type="radio" name="Data[other_hotel]" value="Да" ' . (!isset($objData->tableFields['other_hotel']) || $objData->tableFields['other_hotel'] == 'Да' ? 'checked="checked"' : '') . '> ' . Service_Translate::getText('Да');
			echo '<input type="radio" name="Data[other_hotel]" value="Нет" ' . (isset($objData->tableFields['other_hotel']) && $objData->tableFields['other_hotel'] == 'Нет' ? 'checked="checked"' : '') . '> ' . Service_Translate::getText('Нет');
		$objForm->showAfterField();
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Категория гостиницы')), 'class');
		$objForm->showSeparator();
		$objForm->textField(array('maxlength' => 4, 'text' => Service_Translate::getText('Количество одноместных номеров')), 'single_room');
		$objForm->textField(array('maxlength' => 4, 'text' => Service_Translate::getText('Количество двухместных номеров')), 'double_room');
		$objForm->textField(array('maxlength' => 4, 'text' => Service_Translate::getText('Количество трехместных номеров')), 'triple_room');
		$objForm->showSeparator();
		$objForm->showSeparator();
		
		$objForm->selectField(array('text' => Service_Translate::getText('Форма оплаты'), 'required' => 1, 'optionsArray' => array('' => '---', 'Credit card' => Service_Translate::getText('Кредитная карта'), 'Bank transfer' => Service_Translate::getText('Банковский перевод'), 'Cash' => Service_Translate::getText('Оплата наличными'), 'Other' => Service_Translate::getText('Другое'))), 'payment');
		$objForm->textareaField(array('text' => Service_Translate::getText('Комментарий')), 'comment');
		$objForm->showSeparator();
		
		$objForm->submitButton(array('value' => Service_Translate::getText('Отправить')), 'save');
		$objForm->showSeparator();
		$objForm->close();		
	}
	
	/**
	 * Вводим форму отмены бронирования
	 * 
	 * @param Data $objData - Данные для формы
	 */	
	public function showCancellationForm(Data $objData) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'successMessage' => Service_Translate::getText('Отмена бронирования произошла успешно'), 
			'leftWidth' => 320,
			'fullWidth' => 730,
			'style' => 'width:730px; margin:auto;'
		), $objData);
		$objForm->show();
		
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Номер маршрута'), 'required' => 1), 'id');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('PIN-код для отмены заказа'), 'required' => 1), 'pincode');
		$objForm->textField(array('maxlength' => 128, 'text' => 'E-Mail', 'required' => 1), 'e_mail');
		$objForm->textareaField(array('text' => Service_Translate::getText('Комментарий'), 'required' => 1, 'cols' => 70, 'rows' => 4), 'cancel_comment');

		$objForm->submitButton(array('value' => Service_Translate::getText('Отменить заказ')), 'save');
		$objForm->close();	
	}	
	
	/**
	 * Вводим форму обратной связи
	 * 
	 * @param Data $objData - Данные для формы
	 */	
	public function showFeedbackForm(Data $objData) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'leftWidth' => 200,
			'id' => 'feedback-form'
		), $objData);

		$objForm->show();
		
		$objForm->textField(array('maxlength' => 128, 'text' => 'E-mail', 'required' => 1), 'e_mail');
		$objForm->textareaField(array('text' => 'Текст сообщения', 'cols' => 40, 'rows' => 10, 'required' => 1), 'text');
		
		$objForm->submitButton(array('value' => 'Отправить', 'class' => 'gr-bg btn r-fl'), 'save');
		$objForm->close();
		
		echo '<div id="want-call">';
			echo '<div class="gr-head">Заказать звонок</div>';
			/*echo '<div>';
				echo 'Номер телефона:';
				echo '<input type="text">';
				echo 'Время звонка:';
				echo '<input type="text">';
			echo '</div>';
			*/
			$timesArray = array (
					'8' => '8:00',
					'9' => '9:00',
					'10' => '10:00',
					'11' => '11:00',
					'12' => '12:00',
					'13' => '13:00',
					'14' => '14:00',
					'15' => '15:00',
					'16' => '16:00',
					'17' => '17:00',
					'18' => '18:00',
					'19' => '19:00',
					'20' => '20:00',
					);
			$objForm = new Form_ViewForm(array(
					'errorIfExists' => true,
					'viewFormType' => 'div'
			));
			$objForm->show();
			$objForm->textField(array('text' => 'Номер телефона','class' => 'phone','mandatory'), 'phone');
			$objForm->selectField(array('text' => 'Время звонка','optionsArray' => $timesArray), 'time');
			$objForm->submitButton(array('value' => 'Отправить', 'class' => 'gr-bg btn'), 'save');
			$objForm->close();
		echo '</div>';
	}	
	
	/**
	 * Вводим форму ввода заказа для оплаты через WebMoney
	 * 
	 * @param Data $objData - Данные для формы
	 */	
	public function showWMPayForm(Data $objData) {
		Service_Debug::setDebug();	
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'leftWidth' => 200
		), $objData);
		$objForm->show();
		
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Введите номер платежа'), 'required' => 1), 'ID_booking');
		$objForm->submitButton(array('value' => Service_Translate::getText('Отправить')), 'save');
		$objForm->close();		
	}	
	
	/**
	 * Вводим форму оплаты через WebMoney
	 * 
	 * @param Data $objData - Данные для формы
	 */	
	public function showWMRequestForm(Data $objData) {
		Service_Debug::setDebug();	
		$objForm = new Form_ViewForm(array(
			'action' => 'https://paymaster.ru/Payment/Init', 
			'leftWidth' => 200,
			'viewFormType' => 'div',
			'id' => 'wmRequestForm'
		));
		echo '<p>Номер платежа: <b>' . $objData->getField('LMI_PAYMENT_NO') . '</b></p>';
		echo '<p>Сумма платежа: <b>' .$objData->getField('LMI_PAYMENT_AMOUNT') . '</b> руб. <b>00</b> коп.</p>';
		
		$objForm->show();
		$objForm->hiddenField(array('value' => 'R468647280297'), 'LMI_MERCHANT_ID');
		$objForm->hiddenField(array('value' => $objData->getField('LMI_PAYMENT_AMOUNT')), 'LMI_PAYMENT_AMOUNT');
		$objForm->hiddenField(array('value' => 'RUB'), 'LMI_CURRENCY');
		$objForm->hiddenField(array('value' => $objData->getField('LMI_PAYMENT_NO')), 'LMI_PAYMENT_NO');
		$objForm->hiddenField(array('value' => 'Travel Service'), 'LMI_PAYMENT_DESC');
		$objForm->hiddenField(array('value' => '0'), 'LMI_SIM_MODE');
		echo '<button type="button" class="standardSubmit" onclick="location.href=\'' . W_ABSPATH . 'wm_pay.htm\'">' . Service_Translate::getText('Изменить номер') . '</button>';				
		$objForm->submitButton(array('value' => Service_Translate::getText('Отправить')), 'save');
		$objForm->close();		
	}	

	/**
	 * Вводим форму для подачи заявок гостиницами
	 * 
	 * @param Data $objData - Данные для формы
	 */	
	public function showOffertHotelForm(Data $objData) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'leftWidth' => 200
		), $objData);
		$objForm->show();
		
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Название гостиницы'), 'required' => 1), 'hotel_name');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Категория'), 'required' => 1), 'class');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Количество номеров'), 'required' => 1), 'room_amount');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Адрес'), 'required' => 1), 'address');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Город'), 'required' => 1), 'city');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Почтовый индекс'), 'required' => 1), 'zip');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Страна'), 'required' => 1), 'country');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Телефон'), 'required' => 1), 'phone');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Факс'), 'required' => 1), 'fax');
		$objForm->textField(array('maxlength' => 128, 'text' => 'E-Mail'), 'e_mail');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Сайт')), 'site');
		$objForm->textField(array('maxlength' => 128, 'text' => Service_Translate::getText('Контактное лицо'), 'required' => 1), 'contact_person');
		$objForm->textareaField(array('text' => Service_Translate::getText('Комментарий')), 'comment');
		
		$objForm->submitButton(array('value' => Service_Translate::getText('Отправить')), 'save');
		$objForm->close();		
	}

	/**
	 * Вводим форму для подачи заявок на вакансию
	 * 
	 * @param Data $objData - Данные для формы
	 */	
	public function showCareersForm(Data $objData) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'leftWidth' => 200
		), $objData);
		echo '<a name="careers-form"></a><br>';
		echo '<h2>Отправить свое резюме</h2>';
		$objForm->show();
		
		$arrVacancies = array(
			'Менеджер по работе с отелями' => 'Менеджер по работе с отелями', 
			'Интернет-аналитик/Веб-аналитик' => 'Интернет-аналитик/Веб-аналитик', 
		);
		
		$objForm->selectField(array('text' => 'Вакансия', 'required' => 1, 'optionsArray' => $arrVacancies), 'vacancy');
		$objForm->textField(array('maxlength' => 128, 'text' => 'E-Mail', 'required' => 1), 'e_mail');
		$objForm->textField(array('maxlength' => 128, 'text' => 'Телефон', 'required' => 1), 'phone');
		$objForm->textareaField(array('text' => 'Комментарий', 'cols' => 80, 'rows' => 10, 'required' => 1), 'comment');
		
		$objForm->submitButton(array('value' => Service_Translate::getText('Отправить')), 'save');
		$objForm->close();		
	}

	/**
	 * Вводим форму с кнопокой на отправку заявки отелем
	 * 
	 * @param Data $objData - Данные для формы
	 */	
	public function showOfferButton() {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'action' => self::getLanguageUrl(W_ABSPATH . 'offertohotels_form.htm')
		));
		$objForm->show();
		$objForm->submitButton(array('value' => Service_Translate::getText('Отправить заявку')), 'save');
		$objForm->close();
		echo '<br />';
	}

	/**
	 * Отображаем статью
	 * 
	 * @param Article $objArticle - Статья
	 */
	public function showArticle(Article $objArticle) {
		Service_Debug::setDebug();
		$language = Service_Translate::getLang();
		echo '<div class="text">';
			echo $objArticle->getField('text');
		echo '</div>';
	}
	
}
?>